1. Field of the Invention
This invention relates to the field of microprocessors and, more particularly, to a read-only memory storing DSP functions within a microprocessor.
2. Description of the Relevant Art
Computer systems employ one or more microprocessors, and often employ digital signal processors (DSPs). The DSPs are typically included within multimedia devices such as sound cards, speech recognition cards, video capture cards, etc. The DSPs function as coprocessors, performing complex and repetitive mathematical computations demanded by multimedia devices and other signal processing applications more efficiently than general purpose microprocessors. Microprocessors are typically optimized for performing integer operations upon values stored within a main memory of a computer system. While DSPs perform many of the multimedia functions, the microprocessor manages the operation of the computer system.
Digital signal processors include execution units which comprise one or more arithmetic logic units (ALUs) coupled to hardware multipliers which implement complex mathematical algorithms in a pipelined manner. The instruction set primarily comprises DSP-type instructions (i.e. instructions optimized for the performance of complex mathematical operations) and also includes a small number of non-DSP instructions. The non-DSP instructions are in many ways similar to instructions executed by microprocessors, and are necessary for allowing the DSP to function independent of the microprocessor.
The DSP is typically optimized for mathematical algorithms such as correlation, convolution, finite impulse response (FIR) filters, impulse response (IR) filters, Fast Fourier Transforms (FFTs), matrix correlations, and inner products, among other operations. Implementations of these mathematical algorithms generally comprise long sequences of systematic arithmetic/multiplicative operations. These operations are interrupted on various occasions by decision-type commands. In general, the DSP sequences are a repetition of a very small set of instructions that are executed 70% to 90% of the time. The remaining 10% to 30% of the instructions are primarily boolean/decision operations. Many of these mathematical algorithms perform a repetitive multiply and accumulate function in which a pair of operands are multiplied together and added to a third operand. The third operand is often used to store an accumulation of prior multiplications. Therefore, DSP hardware often includes hardware configured to quickly perform a multiply-add sequence. An exemplary DSP is the ADSP 2171 available from Analog Devices, Inc. of Norwood, Mass.
As microprocessors continue to increase in performance due to increases in operating frequency and the number of transistors which may be included within a single semiconductor substrate, it becomes desirable to perform certain DSP functions within the microprocessor. Instruction code written in the x86 instruction set, for example, may perform the mathematical operations that DSPs typically perform. Cost of the computer system may be reduced through the elimination of one or more DSPs while still performing equivalent functionality. Unfortunately, the instruction code written for the microprocessor may not be as efficient at performing the operations as DSP instruction code. In particular, a larger number of instructions may be necessary to perform the equivalent functionality. The amount of memory needed to store the program may be deleteriously increased. An increase in the amount of memory needed to store the program may lead to decreased overall performance. For example, in a multi-tasking operating system, less memory is available for other programs due to the increased size of a DSP program. It is desirable to perform DSP functionality within a microprocessor without increasing the memory used to store the program.